#include <QCoreApplication>
#include "encoder.h"
#include "iostream"
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <fstream>
#include <sstream>

void writeCharPointerToFile(const char* data, std::size_t size, const std::string& filename) {
    // 打开文件
    std::ofstream file(filename, std::ios::binary);

    // 检查文件是否成功打开
    if (!file.is_open()) {
        std::cerr << "无法打开文件: " << filename << std::endl;
        return;
    }

    // 写入数据
    file.write(data, size);

    // 关闭文件
    file.close();
}
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    std::string filename = "./output.h264";
       int width = 1280;
       int height = 720;
       // 创建一个空白图像，全黑
       cv::Mat colorBar = cv::Mat::zeros(height, width, CV_8UC3);
       // 设置彩条的宽度
       int barWidth = width / 8; // 8个彩条，你可以根据需要调整
       // 生成彩条
       for (int i = 0; i < 8; ++i) {
           // 计算彩条的起始和结束位置
           int startX = i * barWidth;
           int endX = (i + 1) * barWidth;
           // 设置彩条颜色（BGR格式）
           cv::Vec3b color;
           if (i % 2 == 0) {
               color = cv::Vec3b(255, 0, 0); // 蓝色
           } else {
               color = cv::Vec3b(0, 255, 0); // 绿色
           }
           // 在图像上画出彩条
           colorBar(cv::Rect(startX, 0, barWidth, height)) = color;
       }
       int totalBytes = width * height * 3;  // 3个通道（BGR）每个通道占一个字节
       // memcpy(buf, colorBar.data, totalBytes);
       imwrite("./1.jpg",colorBar);
       encoder e;
       char* frame;
       int len;
       e.init(frame,len);


       for(int i =0 ;i<1000;i++)
       {
           e.postAframe(colorBar,frame,len);
           usleep(30);
       }

       e.deinit(MPP_OK);
       return a.exec();
}
